package edu.ccut.saturn.component;

/**
 * 记录了数据组件中的属性信息。数据属性信息包括数据库类型、名称、列名、列别名、
 * 是否是主键的标识、使用的数据库中的序列名、java类型、引用的数据字典的键值、数据长度、默认值、验证信息、表名、显示名称。
 * 
 * @author 谷钰
 * @version 1.0 2008.9.09
 * 
 */
public interface IDataItem extends XmlSerializable {

	/**
	 * 获得数据属性的名称
	 * 
	 * @return
	 */
	public abstract String getName();

	/**
	 * 获得数据属性的数据库类型
	 * 
	 * @return
	 */
	public abstract String getType();

	/**
	 * 获得列名
	 * 
	 * @return
	 */
	public abstract String getColumn();

	/**
	 * if the implication class created by resolving the sqldata config file,
	 * then return null; if resolving saturndata config file, return a column
	 * alias string.
	 * 
	 * @return
	 */
	public abstract String getColumnAlias();

	/**
	 * if the implication class created by resolving the sqldata config file,
	 * then return null; if resolving saturndata config file, return "true" or
	 * "false".
	 * 
	 * @return
	 */
	public abstract String getIsPrimaryKey();

	/**
	 * if the implication class created by resolving the sqldata config file,
	 * then return null; if resolving saturndata config file, return a sequence
	 * name string.
	 * 
	 * @return
	 */
	public abstract String getSequenceName();

	/**
	 * 获得属性的java类型
	 * 
	 * @return
	 */
	public abstract String getJavaType();

	/**
	 * if the implication class created by resolving the sqldata config file,
	 * then return null; if resolving saturndata config file, return a table
	 * string.
	 * 
	 * @return
	 */
	public abstract String getTableName();

	/**
	 * Data item default show name in jsp or other view
	 */
	public abstract String getShowName();

	/**
	 * Data item validate key, use to find a validation to validate item.
	 * 
	 * @return
	 */
	public abstract IValidateUseInfo getValidateUseInfo();

	public abstract void setValidateUseInfo(IValidateUseInfo validateUseInfo);
	
	/**
	 * Data item default value
	 * 
	 * @return
	 */
	public abstract String getDefaultValue();

	/**
	 * Data item length
	 * 
	 * @return
	 */
	public abstract String getLength();

	/**
	 * Get dictionary id.
	 * 
	 * @return
	 */
	public abstract String getDictTypeId();

	/**
	 * 获得时间格式化字符串
	 * 
	 * @return
	 */
	public abstract String getNumberFormat();

	/**
	 * 获得数字格式化字符串
	 * 
	 * @return
	 */
	public abstract String getDatetimeFormat();
}
